package com.seckill.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.seckill.pojo.dto.VoucherOrderSubmitDTO;
import com.seckill.pojo.entity.SeckillCoupon;
import com.seckill.pojo.vo.VoucherOrderVo;

import com.sky.result.PageResult;

/**
 * 秒杀优惠券服务接口
 */
public interface SeckillCouponService  {

    /**
     * 新增秒杀优惠券
     *
     * @param seckillCoupon
     */
    //void insert(SeckillCoupon seckillCoupon);

    void save(SeckillCoupon seckillCoupon);

    /**
     * 分页查询秒杀优惠券
     *
     * @param page
     * @param pageSize
     * @param activityId
     * @return
     */
    PageResult pageQuery(int page, int pageSize, Long activityId);

    /**
     * 根据id查询秒杀优惠券
     *
     * @param id
     * @return
     */
    SeckillCoupon getById(Long id);

    /**
     * 修改秒杀优惠券
     *
     * @param seckillCoupon
     */
    void update(SeckillCoupon seckillCoupon);

    /**
     * 删除秒杀优惠券
     *
     * @param id
     */
    void delete(Long id);

    /**
     * 上架优惠券到活动
     *
     * @param couponId   优惠券ID
     * @param activityId 活动ID
     */
    void addToActivity(Long couponId, Long activityId);

    /**
     * 用户领取优惠券
     *
     * @param couponId 优惠券ID
     * @param userId   用户ID
     */
    void take(Long couponId, Long userId);

    /**
     * 用户秒杀优惠券
     * @param voucherOrderSubmitDTO
     * @return
     */
    VoucherOrderVo seckillCouponOrder(VoucherOrderSubmitDTO voucherOrderSubmitDTO);

    /**
     * 扣减库存
     * @param id
     * @return
     */
    boolean decStock(Long id);
}